package yunjiao.javatutorials.guava.concurrent;

/**
 * 定义目标接口（必须是接口，代理模式依赖接口）
 *
 * @author yangyunjiao
 */
public interface TaskService {
    String longRunningTask(String param); // 耗时任务

    class TaskServiceImpl implements TaskService {
        @Override
        public String longRunningTask(String param) {
            // 模拟耗时操作（如调用第三方接口、数据库查询）
            try {
                Thread.sleep(3000); // 实际执行 3 秒
            } catch (InterruptedException e) {
                // 关键：超时后 TimeLimiter 会中断线程，需响应中断（退出任务）
                Thread.currentThread().interrupt(); // 保留中断状态
                return "任务被中断";
            }
            return "任务完成：" + param;
        }
    }
}
